/**
 * @author tmh
 * @date 2024/9/13 20:08
 * @description
 */
public class T376摆动序列 {
    /**
     * 在摆动的时候更新Prediff来解决上坡的时候出现平坡的问题
     *
     * @param nums
     * @return
     */
    public int wiggleMaxLength(int[] nums) {
        if (nums.length < 2) {
            return nums.length;
        }
        //默认记录最后一个元素的摆动
        int count = 1;
        //初始化两个diff
        int preDiff = 0;
        int curDiff = 0;
        //i从1开始，表示初始记录第一个元素的curDiff,注意i的范围是最后指向最后一个元素
        for (int i = 1; i < nums.length; i++) {
            curDiff = nums[i] - nums[i - 1];
            if ((preDiff >= 0 && curDiff < 0) || (preDiff <= 0 && curDiff > 0)) {
                count++;
                preDiff = curDiff;
            }
        }
        return count;
    }
}
